`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2023/09/19 21:44:02
// Design Name: 
// Module Name: rmt_fpga
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module rmt_fpga(
    input clk,
    input [23:0] led,
    input [7:0] bit_sel,
    input [7:0] seg_sel,
    input rx,

    output [23:0] sw,
    output [4:0] btn,
    output tx
    );

    wire [7:0] rx_data;
    wire rx_done;
    wire [7:0] tx_data;
    wire tx_done;
    wire txd_start;
    wire turn_start;

    uart_rx uart_rx_ins(
        .clk(clk),
        .rst(0),
        .rx(rx),
        .rx_data(rx_data),
        .rx_done(rx_done)
    );

    uart_tx uart_tx_ins(
        .clk(clk),
        .rst(0),
        .txd_start(txd_start),
        .tx_data(tx_data),
        .tx(tx),
        .tx_done(tx_done)
    );

    decode decode_ins(
        .clk(clk),
        .code(rx_data),
        .dc_en(rx_done),
        .sw(sw),
        .btn(btn),
        .turn_start(turn_start)
    );

    sampling sampling_ins(
        .clk(clk),
        .led(led),
        .bit_sel(bit_sel),
        .seg_sel(seg_sel),
        .tx_done(tx_done),
        .txd_start(txd_start),
        .tx_data(tx_data),
        .turn_start(turn_start)
    );

endmodule
